1078. Bigram 分词【简单】
1. 📝 题目描述
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。
对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。
示例 1:
txt
输入:text = "alice is a good girl she is a good student", first = "a", second = "good"
输出:["girl","student"]1
2
2
示例 2:
txt
输入:text = "we will we will rock you", first = "we", second = "will"
输出:["we","rock"]1
2
2
提示:
1 <= text.length <= 1000text由小写英文字母和空格组成text中的所有单词之间都由 单个空格字符 分隔1 <= first.length, second.length <= 10first和second由小写英文字母组成text不包含任何前缀或尾随空格。
2. 🎯 s.1 - 线性扫描收集第三词
js
/**
* @param {string} text
* @param {string} first
* @param {string} second
* @return {string[]}
*/
var findOcurrences = function (text, first, second) {
const words = text.split(' ')
const res = []
for (let i = 0; i + 2 < words.length; i++) {
if (words[i] === first && words[i + 1] === second) {
res.push(words[i + 2])
}
}
return res
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 时间复杂度:
,其中 为字符串长度,需遍历整个字符串分词并线性扫描单词数组 - 空间复杂度:
,用于存储切分后的单词数组以及返回的结果集
算法思路:
- 将字符串
text按空格切分为单词数组 - 遍历数组并检查当前单词与下一个单词是否对应匹配
first和second - 若匹配成功,则将随后出现的第三个单词存入结果数组中